"""
线程池
"""
from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor   #线程池与线程池
import time
from time import sleep

def send_request(url):
    sleep(3)
    print(url)

if __name__ == '__main__':
    # 先请求目录
    urls = [
        'https://www.xunter.com/1',
        'https://www.xunter.com/2',
        'https://www.xunter.com/3',
        'https://www.xunter.com/4',
        'https://www.xunter.com/5',
        'https://www.xunter.com/6',
        'https://www.xunter.com/7',
        'https://www.xunter.com/8',
        'https://www.xunter.com/9',
        'https://www.xunter.com/10',

    ]

    proce = []  # 子进程列表

    start = time.time()  # 开始运行的时间戳
    print('开始:', start)

    # 线程池
    with ThreadPoolExecutor(max_workers=8) as executor:
        #用with关键字创建进程池 在使用完后自动将进程池关闭  用变量executor保存创建的进程池
        #map()方法会获取任务列表中每个元素，调用任务函数，传入参数，也就是说任务列表中有几个任务就会调用几次
        executor.map(send_request, urls)    #第一个 参数是任务函数，第二个参数是任务列表

    # 进程池
    with ProcessPoolExecutor(max_workers=8) as executor:
        executor.map(send_request, urls)

    end = time.time()
    print('结束：', end, '耗时：', end - start)